/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package co.edu.eam.persitencia.dao.implementacion;

import co.edu.eam.persitencia.dao.Interfaz.IDAOHistoriaClinica;
import co.edu.eam.persitencia.entidades.Antecedente;
import co.edu.eam.persitencia.entidades.DetalleComentarioRevision;
import co.edu.eam.persitencia.entidades.DetalleComentarioSistema;
import co.edu.eam.persitencia.entidades.DetalleHistoriaClinica;
import co.edu.eam.persitencia.entidades.ExamenFisico;
import co.edu.eam.persitencia.entidades.HistoriaClinica;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.Query;

/**
 *
 * @author Erika
 */
public class DAOHistoriaClinica implements IDAOHistoriaClinica{
    
    private EntityManager em;

    public DAOHistoriaClinica(EntityManager em) {
        this.em = em;
    }

    @Override
    public void crearDetalleHistoriaClinica(DetalleHistoriaClinica detalleHistoria) throws Exception {
        em.getTransaction().begin();
        em.persist(detalleHistoria);
        em.getTransaction().commit();
    }

    @Override
    public List<DetalleHistoriaClinica> listarDetalleHistoriaClinica(HistoriaClinica historia) throws Exception {
        Query q = em.createNamedQuery(DetalleHistoriaClinica.CONSULTA_LISTAR_DETALLEHISTORIACLINICA);
        return q.getResultList();
    }

    @Override
    public void crearDetalleComentarioRevision(DetalleComentarioRevision detalleComentarioR) throws Exception {
        em.getTransaction().begin();
        em.persist(detalleComentarioR);
        em.getTransaction().commit();
    }

    @Override
    public List<DetalleComentarioRevision> listarComentarioRevision(HistoriaClinica historia) throws Exception {
        Query q = em.createNamedQuery(DetalleComentarioRevision.CONSULTA_LISTAR_DETALLECOMENTARIOREVISION);
        
        return q.getResultList();
    }

    @Override
    public void crearDetalleComentarioSistema(DetalleComentarioSistema detalleComentarioS) throws Exception {
       em.getTransaction().begin();
        em.persist(detalleComentarioS);
        em.getTransaction().commit();
    }

    @Override
    public List<DetalleComentarioSistema> listarComentarioSistema(HistoriaClinica historia) throws Exception {
       Query q = em.createNamedQuery(DetalleComentarioSistema.CONSULTA_LISTAR_DETALLECOMENTARIOSISTEMA);
        q.setParameter(DetalleComentarioSistema.PARAMETRO_ID_HISTORIA, historia.getId());
        return q.getResultList();
    }

    @Override
    public void crearExamenFisico(ExamenFisico examenFisico) throws Exception {
        em.getTransaction().begin();
        em.persist(examenFisico);
        em.getTransaction().commit();
    }

    @Override
    public ExamenFisico buscarExamenFisico(String cedula) throws Exception {
       Query q = em.createNamedQuery(ExamenFisico.CONSULTA_EXAMEN);
              q.setParameter(ExamenFisico.PARAMETRO_PACIENTE, cedula);
              List <ExamenFisico>lista= q.getResultList();
              
              if(lista.isEmpty()==false){
              return lista.get(0);
              }else{
                  return null;
              }
    }

    @Override
    public void crearAntecedente(Antecedente antecedente) throws Exception {
       em.getTransaction().begin();
        em.persist(antecedente);
        em.getTransaction().commit();
    }

    @Override
    public Antecedente buscarAntecedente(String cedula) throws Exception {
        Query q = em.createNamedQuery(Antecedente.CONSULTA_ANTECENDENTE);
              q.setParameter(Antecedente.PARAMETRO_PACIENTE, cedula);
              List <Antecedente>lista= q.getResultList();
              
              if(lista.isEmpty()==false){
              return lista.get(0);
              }else{
                  return null;
              }
    }

    @Override
    public void crearHistoriaClinica(HistoriaClinica historiaClinica) throws Exception {
        em.getTransaction().begin();
        em.persist(historiaClinica);
        em.getTransaction().commit();
    }

    @Override
    public HistoriaClinica buscarHistoriaClinica(String documento) throws Exception {
      Query q = em.createNamedQuery(HistoriaClinica.CONSULTA_HISTORIACLINICA);
              q.setParameter(HistoriaClinica.PARAMETRO_PACIENTE, documento);
              List <HistoriaClinica>lista= q.getResultList();
              
              if(lista.isEmpty()==false){
              return lista.get(0);
              }else{
                  return null;
              }
    }

    @Override
    public List<HistoriaClinica> listarHistoriaClinica() throws Exception {
        Query q = em.createNamedQuery(HistoriaClinica.CONSULTA_LISTA_TODAS_HISTORIAS);        
        return q.getResultList();
    }
    
}
